This disclosure relates generally to the field of computing systems, and more particularly to a trace queue for storage of trace data that is generated during execution of computer software on a computing system.
During execution of computer software on a computing system, trace data is generated at various trace points located in the software. Some trace data relates to events that occur during the normal execution of the software, and other trace data is generated in the event an error occurs during execution of the software. When an error occurs during execution of the computer software, the trace data that was generated during execution of the software is examined to determine the source of the error. In order to allow examination of the trace data to determine the source of an error, the trace data is collected and stored on a storage device in the computing system. Trace data may be stored in a trace queue comprising a fixed size first-in-first-out (FIFO) buffer. At any given time, such a trace queue contains the most recently entered trace data, with the oldest trace data being overwritten as new trace data is generated during the execution of the computer software.
In large software systems that run on computer systems comprising numerous internal or external devices, numerous trace points are needed; hence, a large volume of trace data may be generated during execution of such a software system. Because the amount of space available for the trace queue may be fixed or limited, older trace data is overwritten by newer trace data when the space allocated for the trace data is full. However, the older overwritten trace data may be needed to complete debugging and error detection tasks, for example, in cases when the execution of a complex software system is monitored for a relatively long period of time to precisely determine the causes of errors in the execution of the software system.